package com.jinmdz.fmis.api.api.model.settlement;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.jinmdz.fmis.core.annotation.AnDict;
import com.jinmdz.fmis.core.constant.EDictCode;
import com.jinmdz.fmis.dao.base.BaseItem;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 费用结算响应数据
 *
 * @author LiCongLu
 * @date 2020-02-20 15:38
 */
@ApiModel(value = "费用结算响应数据", description = "费用结算响应数据")
public class ChargeSettlementSettleItem extends BaseItem {
    /**
     * 业务编码
     */
    @ApiModelProperty(value = "业务编码", name = "businessCode", position = 1)
    private String businessCode;

    /**
     * 结算批次编号
     */
    @ApiModelProperty(value = "结算批次编号", name = "settleBatchNo", position = 2)
    private String settleBatchNo;

    /**
     * 结算金额
     */
    @ApiModelProperty(value = "结算金额", name = "settleCharge", position = 3)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal settleCharge;

    /**
     * 结算时间
     */
    @ApiModelProperty(value = "结算时间", name = "settleTime", position = 4)
    @JsonFormat(pattern = yyyy_MM_dd_HH_mm_ss)
    private Date settleTime;

    /**
     * 结算类型
     */
    @ApiModelProperty(value = "结算类型", name = "settleTypeCode", position = 5)
    @JsonIgnore
    private Integer settleTypeCode;

    /**
     * 结算类型
     */
    @ApiModelProperty(value = "结算类型", name = "settleType", position = 6)
    @AnDict(dict = EDictCode.SETTLE_TYPE, ref = "settleTypeCode")
    private String settleType;

    /**
     * 付款方式
     */
    @ApiModelProperty(value = "付款方式", name = "payType", position = 7)
    private String payType;

    /**
     * 发票代码
     */
    @ApiModelProperty(value = "发票代码", name = "invoiceCode", position = 8)
    private String invoiceCode;

    /**
     * 发票号码
     */
    @ApiModelProperty(value = "发票号码", name = "invoiceNo", position = 9)
    private String invoiceNo;

    /**
     * 发票抬头
     */
    @ApiModelProperty(value = "发票抬头", name = "invoiceTitle", position = 10)
    @JsonIgnore
    private String invoiceTitle;

    /**
     * 收据号
     */
    @ApiModelProperty(value = "收据号", name = "receiptNo", position = 11)
    private String receiptNo;

    /**
     * 是否退费
     */
    @ApiModelProperty(value = "是否退费", name = "asRefund", position = 12)
    private Integer asRefund;

    /**
     * 是否审核
     */
    @ApiModelProperty(value = "是否审核", name = "asVerify", position = 13)
    private Integer asVerify;

    /**
     * 结算经办人
     */
    @ApiModelProperty(value = "结算经办人", name = "settleUserName", position = 14)
    private String settleUserName;

    /**
     * 是否打印发票
     */
    @ApiModelProperty(value = "是否打印发票", name = "asInvoice", position = 15)
    private Integer asInvoice;

    /**
     * 备注信息
     */
    @ApiModelProperty(value = "备注信息", name = "remark", position = 16)
    private String remark;

    public String getBusinessCode() {
        return businessCode;
    }

    public ChargeSettlementSettleItem setBusinessCode(String businessCode) {
        this.businessCode = businessCode;
        return this;
    }

    public String getSettleBatchNo() {
        return settleBatchNo;
    }

    public ChargeSettlementSettleItem setSettleBatchNo(String settleBatchNo) {
        this.settleBatchNo = settleBatchNo;
        return this;
    }

    public BigDecimal getSettleCharge() {
        return settleCharge;
    }

    public ChargeSettlementSettleItem setSettleCharge(BigDecimal settleCharge) {
        this.settleCharge = settleCharge;
        return this;
    }

    public Date getSettleTime() {
        return settleTime;
    }

    public ChargeSettlementSettleItem setSettleTime(Date settleTime) {
        this.settleTime = settleTime;
        return this;
    }

    public Integer getSettleTypeCode() {
        return settleTypeCode;
    }

    public ChargeSettlementSettleItem setSettleTypeCode(Integer settleTypeCode) {
        this.settleTypeCode = settleTypeCode;
        return this;
    }

    public String getSettleType() {
        return settleType;
    }

    public ChargeSettlementSettleItem setSettleType(String settleType) {
        this.settleType = settleType;
        return this;
    }

    public String getPayType() {
        return payType;
    }

    public ChargeSettlementSettleItem setPayType(String payType) {
        this.payType = payType;
        return this;
    }

    public String getInvoiceCode() {
        return invoiceCode;
    }

    public ChargeSettlementSettleItem setInvoiceCode(String invoiceCode) {
        this.invoiceCode = invoiceCode;
        return this;
    }

    public String getInvoiceNo() {
        return invoiceNo;
    }

    public ChargeSettlementSettleItem setInvoiceNo(String invoiceNo) {
        this.invoiceNo = invoiceNo;
        return this;
    }

    public String getInvoiceTitle() {
        return invoiceTitle;
    }

    public ChargeSettlementSettleItem setInvoiceTitle(String invoiceTitle) {
        this.invoiceTitle = invoiceTitle;
        return this;
    }

    public String getReceiptNo() {
        return receiptNo;
    }

    public ChargeSettlementSettleItem setReceiptNo(String receiptNo) {
        this.receiptNo = receiptNo;
        return this;
    }

    public Integer getAsRefund() {
        return asRefund;
    }

    public ChargeSettlementSettleItem setAsRefund(Integer asRefund) {
        this.asRefund = asRefund;
        return this;
    }

    public Integer getAsVerify() {
        return asVerify;
    }

    public ChargeSettlementSettleItem setAsVerify(Integer asVerify) {
        this.asVerify = asVerify;
        return this;
    }

    public String getSettleUserName() {
        return settleUserName;
    }

    public ChargeSettlementSettleItem setSettleUserName(String settleUserName) {
        this.settleUserName = settleUserName;
        return this;
    }

    public Integer getAsInvoice() {
        return asInvoice;
    }

    public ChargeSettlementSettleItem setAsInvoice(Integer asInvoice) {
        this.asInvoice = asInvoice;
        return this;
    }

    public String getRemark() {
        return remark;
    }

    public ChargeSettlementSettleItem setRemark(String remark) {
        this.remark = remark;
        return this;
    }
}
